#ifndef OPTIMIZECAMPOS_H
#define OPTIMIZECAMPOS_H

#include <Eigen/Dense>
#include <iostream>
#include <cmath>
#include <Eigen/Core>

double computeLoss(const Eigen::Vector3d& cam_pos, 
                   const Eigen::Quaterniond& cam_orientation,
                   const Eigen::Matrix4d& pnp_mat,
                   const Eigen::Matrix4d& ref_uav_pose);


void optimizeCamPose(Eigen::Vector3d& cam_pos, 
                     Eigen::Quaterniond& cam_orientation,
                     const Eigen::Matrix4d& pnp_mat,
                     const Eigen::Matrix4d& ref_uav_pose,
                     int max_iterations, 
                     double learning_rate);
                     //max_iterations=100, learning_rate=0.01
                     

#endif